mir: use old scrolling system if we get simple integer values
authorMarco Trevisan (Treviño) <mail@3v1n0.net>
Fri, 12 Dec 2014 00:40:55 +0000 (01:40 +0100)
committerWilliam Hua <william@attente.ca>
Thu, 5 Feb 2015 16:26:18 +0000 (17:26 +0100)
gdk/mir/gdkmireventsource.c

index caa07b1a5e12c396605c051ef09cc3f16c7d3abb..8a1652842f9a4e92a093ff7f3c605523ba993b6a 100644 (file)
@@ -167,11 +167,23 @@ generate_scroll_event (GdkWindow *window, gdouble x, gdouble y, gdouble delta_x,
   event->scroll.x = x;
   event->scroll.y = y;
   event->scroll.state = state;
-  event->scroll.direction = GDK_SCROLL_SMOOTH;
-  event->scroll.delta_x = -delta_x;
-  event->scroll.delta_y = -delta_y;
   event->scroll.time = event_time;
 
+  if (ABS (delta_x) == 1 && delta_y == 0)
+    {
+      event->scroll.direction = (delta_x < 0) ? GDK_SCROLL_LEFT : GDK_SCROLL_RIGHT;
+    }
+  else if (ABS (delta_y) == 1 && delta_x == 0)
+    {
+      event->scroll.direction = (delta_y < 0) ? GDK_SCROLL_DOWN : GDK_SCROLL_UP;
+    }
+  else
+    {
+      event->scroll.direction = GDK_SCROLL_SMOOTH;
+      event->scroll.delta_x = -delta_x;
+      event->scroll.delta_y = -delta_y;
+    }
+
   send_event (window, get_pointer (window), event);
 }